﻿#region << 版 本 注 释 >>
/*----------------------------------------------------------------
 * 创建者：王明亮
 * 创建时间：2023/8/27 20:08:05
 * 版本：V1.0.0
 * 描述：
 *
 * ----------------------------------------------------------------
 * 修改人：
 * 时间：
 * 修改说明：
 *
 * 版本：V1.0.1
 *----------------------------------------------------------------*/
#endregion << 版 本 注 释 >>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace CreateType._02.工厂方法模式
{
    /// <summary>
    /// 【01】抽象工厂类
    /// </summary>
    public abstract class Product
    {
        /// <summary>
        /// 静态工厂方法
        /// </summary>
        /// <param name="arg"></param>
        /// <returns></returns>
        public static Product GetProduct(string arg)
        {
            Product product = null;
            switch (arg)
            {
                case "A":
                    product = new ProduceA();
                    break;
                case "B":
                    product = new ProduceB();
                    break;
                    //注意：有新产品需要修改工厂方法和创建新具体产品
                default:
                    throw new ArgumentException(message: "参数不合法");
            }
            return product;
        }
        /// <summary>
        /// 所有产品类的公共业务方法
        /// </summary>
        public void MethodSame()
        {
            Console.WriteLine("公共业务方法");
        }
        /// <summary>
        /// 声明抽象业务方法
        /// </summary>
        public abstract void MethodDiff();
    }
}
